分享人:钟楚炯
目录
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
get 和 post是HTTP中请求数据的方法;application json 与form表单是HTTP中传输文件的类型.
所以要了解其中的区别,要先了解HTTP 协议
HTTP是一种基于请求响应的通信协议,客户端对服务器发出一个取得资源的请求,服务器将要求的资源响应给客户端,每次的联结只作一次请求/响应,是一种很简单的通信协议,没有请求就没有响应。
HTTP协议之下,服务器是个健忘的家伙,服务器响应客户端之后,就不会记得客户端的信息,更不会去维护与客户端有关的状态,因此http又称为无状态的通信协议。
那么,当请求数据的时候,HTTP协议下的传输的数据结构是怎么样的呢?
客户端请求消息:由请求行、请求头部、空行、请求数据组成。
get与post的区别
先介绍下幂等的概念:如果一个操作没有副作用,或者多次操作对资源产生的副作用相同,我们就说这个操作是幂等的。
get方法用户获取资源,没有副作用,所以是幂等的;post用于创建资源,是有副作用的,且副作用不同,所以post不是幂等的。(两次相同的POST请求会在服务器端创建两份资源,它们具有不同的URI)
对比图
GET和POST使用环境?
若符合下列任一情况,则用POST方法:
若符合下列任一情况,则用GET方法:
application json 与form表单的区别?
因为get请求方式的参数是放在url里的,所以只有url编码这种编码方式。post是放在请求体里面,它支持多种编码类型,application json与form表单 就是post编码类型中的常见的两种,
application/x-www-form-urlencoded方式是Jquery的Ajax请求默认方式,这种方式的好处就是浏览器都支持, 在请求发送过程中会对数据进行序列化处理,以键值对形式?key1=value1&key2=value2的方式发送到服务器, 如果用Jquery,它内部已经进行了处理,如果自己写原生的Ajax请求,就需要自己对数据进行序列化。
application/json,随着json规范的越来越流行,并且浏览器支持程度越来越好, 许多开发人员以application/json作为请求content-type,告诉服务器请求的主题内容是json格式的字符串, 服务器端会对json字符串进行解析,这种方式的好处就是前端人员不需要关心数据结构的复杂度, 只要是标准的json格式就能提交成功,application/json数据格式越来越得到开发人员的青睐。JSON 格式支持比键值对复杂得多的结构化数据,可以提交层次非常深的数据。
参考一:W3C
参考二: 知乎——get和post区别?
参考四: application/json 和 application/x-www-form-urlencoded的区别
感谢大家观看
BY : 包腾飞|钟楚炯